Linux 终端基础知识#8:移动文件和文件夹

您所在的位置:网站首页 linux 移动 Linux 终端基础知识#8:移动文件和文件夹

Linux 终端基础知识#8:移动文件和文件夹

2024-03-31 01:58| 来源: 网络整理| 查看: 265

Linux 终端基础知识#8:移动文件和文件夹

在终端基础知识系列的第八章中,了解如何在 Linux 中使用 mv 命令移动文件和目录。

剪切、复制和粘贴是日常计算生活的一部分。

在上一章中,您学习了如何在终端中复制文件和文件夹(目录)。

在终端基础知识系列的这一部分中,您将了解 Linux 终端中的剪切粘贴操作(移动)。

移动还是剪切粘贴?

好吧!剪切粘贴在这里不是正确的技术术语。这称为移动文件(和文件夹)。

由于您是命令行新手,您可能会发现术语“移动”令人困惑。

当您使用cp命令将文件复制到另一个位置时,源文件仍保留在同一位置。

当您使用 mv 命令将文件移动到另一个位置时,源文件将不再保留在原始位置。

这与您在图形文件资源管理器中执行的剪切粘贴操作(Ctrl+X 和 Ctrl+V)相同。

基本上,在命令行中移动文件可以被认为与图形环境中的剪切粘贴相同。

移动文件

Linux 有一个专用的 mv 命令(move 的缩写),用于将文件和目录移动到其他位置。

使用 mv 命令非常简单:

mv source_file destination_directory

路径的作用在这里也发挥了作用。您可以使用绝对路径或相对路径。无论哪个适合您的需要。

让我们通过一个例子来看看。 您应该通过在系统上复制示例场景来进行练习。

这是示例中的目录结构:

abhishek@linux-console:~/moving_files$ tree . ├── dir1 │   ├── file_2 │   └── file_3 ├── dir2 │   └── passwd ├── dir3 ├── file_1 ├── file_2 ├── file_3 ├── file_4 ├── passwd └── services 3 directories, 9 files

现在,假设我想将 file_1 移动到 dir3。

mv file_1 dir3

移动多个文件

您可以在同一 mv 命令中将多个文件移动到另一个位置:

mv file1 file2 fileN destination_directory

让我们继续我们的示例场景来移动多个文件。

mv file_2 file_3 file_4 dir3

将文件从 dir3 移回当前目录。我们在接下来的示例中需要它们。

小心移动文件

如果目的地已有同名文件,则目的地文件将立即被替换。有时,您不会想要这样。

与 cp 命令一样,mv 命令也具有带有选项 -i 的交互模式。

而且目的是一样的。在替换目标位置的文件之前请求确认。

abhishek@linux-console:~/moving_files$ mv -i file_3 dir1 mv: overwrite 'dir1/file_3'?

您可以按 N 拒绝替换,按 Y 或 Enter 替换目标文件。

移动但仅更新

mv 命令带有一些特殊选项。其中之一是更新选项-u。

这样,只有当正在移动的文件比目标文件新时,目标文件才会被替换。

mv -u file_name destination_directory

这是一个例子。 file_2 于 10:39 修改,file_3 于 10:06 修改。

abhishek@linux-console:~/moving_files$ ls -l file_2 file_3 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_2 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:06 file_3

在目标目录dir1中,file_2的最后修改时间为10:37,file_3的最后修改时间为10:39。

abhishek@linux-console:~/moving_files$ ls -l dir1 total 0 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:37 file_2 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_3

换句话说,在目标目录中,file_2 比要移动的目录旧,file_3 比要移动的目录新。

这也意味着 file_3 不会被移动,而 file_2 将被更新。运行 mv 命令后,您可以通过目标目录中文件的时间戳进行验证。

abhishek@linux-console:~/moving_files$ mv -u file_2 file_3 dir1 abhishek@linux-console:~/moving_files$ ls -l dir1 total 0 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_2 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_3 abhishek@linux-console:~/moving_files$ date Tue Apr 4 10:41:16 AM IST 2023 abhishek@linux-console:~/moving_files$

可以看到,move命令是在10:41执行的,只有file_2的时间戳发生了变化。

您还可以使用备份选项-b。如果目标文件被替换,它将自动创建具有 filename~ 模式的备份。

故障排除:目标不是目录

如果要移动多个文件,最后一个参数必须是目录。否则,你会遇到这个错误:

target is not a directory

在这里,我创建了一个名为 dir 的文件。名字听起来像一个目录,但它是一个文件。当我尝试将多个文件移动到其中时,出现明显的错误:

但是如果将一个文件移动到另一个文件怎么办?在这种情况下,目标文件将被源文件的内容替换,同时源文件将重命名为目标文件。稍后部分将详细介绍这一点。

移动目录

到目前为止,您已经了解了有关移动文件的所有内容。移动目录怎么样?

cp 和 rm 命令使用 reusrive 选项 -r 分别复制和删除文件夹。

然而,mv 命令没有这样的要求。您可以使用 mv 命令来移动目录。

mv dir target_directory

下面是我将 dir2 目录移动到 dir3 的示例。正如您所看到的,dir2 及其内容被移动到 dir3。

您可以用相同的方式移动多个目录。

重命名文件和目录

如果要重命名文件或目录,可以使用相同的 mv 命令。

mv filename new_name_in_same_or_new_location

假设您要重命名同一位置的文件。以下是我在同一目录中将 file_1 重命名为 file_one 的示例。

您还可以移动和重命名文件。您只需提供目标的目录路径和文件名。在这里,我将 services 文件重命名为 my_services,同时将其移动到 dir3。

abhishek@linux-console:~/moving_files$ ls dir dir1 dir3 file_2 file_3 file_one passwd services abhishek@linux-console:~/moving_files$ mv services dir3/my_services abhishek@linux-console:~/moving_files$ ls dir3 dir2 my_services

您不能直接使用 mv 命令重命名多个文件。您必须将其与其他命令(例如 find 等)结合起来。

测试你的知识

是时候练习你刚刚学到的东西了。

创建一个新文件夹来练习。在这里,创建一个像这样的目录结构:

. ├── dir1 ├── dir2 │   ├── dir21 │   ├── dir22 │   └── dir23 └── dir3

将文件 /etc/passwd 复制到当前目录。现在将其重命名为 secrets。

创建三个新文件,分别命名为 file_1、file_2 和 file_3。将所有文件移至 dir22。

现在将 dir22 目录移动到 dir3。

现在删除 dir2 的所有内容。

在终端基础知识系列的倒数第二章中,您将了解如何在终端中编辑文件。敬请关注。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3